package com.ctshk.rpc.train.dto.h5;

import com.ctshk.rpc.train.dto.ReservationTrainSeatInfoDTO;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 火车票预订dto
 * </p>
 *
 * @author 彭柳霖
 * @since 2021-02-09
 */
@Data
@ApiModel(value="ReservationTrainH5PageDTO对象", description="火车票预订dto")
public class ReservationTrainH5PageDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "火车票产品id")
    private Long trainProductId;

    @ApiModelProperty(value = "火车票产品来源")
    private Integer productSource;

    @ApiModelProperty(value = "出发时间")
    @JsonFormat(timezone = "GMT+8", pattern = "HH:mm")
    private LocalDateTime departureTime;

    @ApiModelProperty(value = "到达时间")
    @JsonFormat(timezone = "GMT+8", pattern = "HH:mm")
    private LocalDateTime terminusTime;

    @ApiModelProperty(value = "到达时间+天数")
    private Integer terminusTimeDay;

    @ApiModelProperty(value = "车次Id")
    private Long trainNumberId;

    @ApiModelProperty(value = "车次名称")
    private String trainNumberName;

    @ApiModelProperty(value = "停留时间")
    private Long stopTime;

    @ApiModelProperty(value = "上车站id")
    private Long boardingStationId;

    @ApiModelProperty(value = "上车站名称")
    private String boardingStationName;

    @ApiModelProperty(value = "下车站点Id")
    private Long alightingStationId;

    @ApiModelProperty(value = "下车站点名称")
    private String alightingStationName;

    @ApiModelProperty(value = "适用人群")
    private Long intendedFor;

    @ApiModelProperty(value = "适用人群名称")
    private String intendedForName;

    @ApiModelProperty(value = "供应商名称")
    private String supplierName;

    @ApiModelProperty(value = "余票")
    private Integer ticketNum = 0;

    @ApiModelProperty("成人总价格(成本+加幅策略加幅+预订服务费)")
    private BigDecimal adultPrice;

    @ApiModelProperty("成人票价价格(成本+加幅策略加幅)")
    private BigDecimal adultPrimePrice;

    @ApiModelProperty("成人票服务费")
    private BigDecimal adultServiceChargePrice;

    @ApiModelProperty("小童票总价格(成本+加幅策略加幅+预订服务费)")
    private BigDecimal childrenPrice;

    @ApiModelProperty("成人票价价格(成本+加幅策略加幅)")
    private BigDecimal childrenPrimePrice;

    @ApiModelProperty("小童服务费")
    private BigDecimal childrenServiceChargePrice;

    @ApiModelProperty("成本id")
    private Long costId;

    @ApiModelProperty(value = "价格")
    private BigDecimal price;

    @ApiModelProperty(value = "是否二次确认")
    private Integer isConfirm;

    @ApiModelProperty(value = "预订须知")
    private String bookingInformation;

    @ApiModelProperty(value = "退改设置")
    private Integer changeSettings;

    @ApiModelProperty(value = "是否展示代理下单,默认false")
    private Boolean isShowAgent = false;

    @ApiModelProperty(value = "运行时长")
    private String runningTime;

    @ApiModelProperty(value = "成本中心库存")
    @JsonIgnore
    private Integer stock = 0;

    @ApiModelProperty(value = "座席等级名称")
    private String seatLevelName;

    @ApiModelProperty(value = "座席信息數組")
    private List<ReservationTrainSeatInfoDTO> ReservationTrainSeatInfoDTOList;

    @ApiModelProperty(value = "负责人ID")
    private Long chargePersonId;

    @ApiModelProperty(value = "负责人ID")
    private Long createId;

    @ApiModelProperty(value = "最低票价")
    private BigDecimal minPrice;
}
